package 算法

object LetCode {
  def main(args: Array[String]): Unit = {
    val nums = Array[Int](3, 2, 4)
    val tuple = sum2(nums, 6)
    println(tuple)
  }

  /**
   * 给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那 两个 整数，并返回他们的数组下标。
   * 你可以假设每种输入只会对应一个答案。但是，数组中同一个元素不能使用两遍。
   * 示例:
   * 给定 nums = [2, 7, 11, 15], target = 9
   * 因为 nums[0] + nums[1] = 2 + 7 = 9
   * 所以返回 [0, 1]
   */

  //  def sum2(nums: Array[Int], target: Int): Tuple2[Int, Int] = {
  //    var tuple: (Int, Int) = null
  //    for (i <- nums.indices) {
  //      var x = nums(i)
  //      if (i < nums.length - 2) {
  //        for (j <- i + 1 until nums.length if (x + nums(j) == target)) {
  //          tuple = (i, j)
  //        }
  //      }
  //    }
  //    tuple
  //  }
  def sum2(nums: Array[Int], target: Int): Array[Int] = {
    var res: Array[Int] = null
    for (i <- nums.indices) {
      var x = nums(i)
      if (i <= nums.length - 2) {
        for (j <- i + 1 until nums.length if (x + nums(j) == target)) {
          res = Array(i, j)
        }
      }
    }
    res
  }
}

/*
给出两个 非空 的链表用来表示两个非负的整数。其中，它们各自的位数是按照 逆序 的方式存储的，并且它们的每个节点只能存储 一位 数字。

如果，我们将这两个数相加起来，则会返回一个新的链表来表示它们的和。

您可以假设除了数字 0 之外，这两个数都不会以 0 开头。

示例：

输入：(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出：7 -> 0 -> 8
原因：342 + 465 = 807
 */

